package configstc

// JobConfig 执行job配置
/* 示例配置

  multi_files:
    #平常灵活使用的压测配置
	- data/jobs/iot_demo.yaml

  # 详细action配置，数组，每个子项配置如下：
  # actions 定义需要执行的操作，多个以逗号分隔,值可参考 当前所在目录/config/consts.go 文件
  # op_interval  定义本批次操作的再次执行的间隔时间，单位：毫秒
  #              如本次操作组合有10次操作，定义500毫秒间隔，则相当于下单频率为每分钟20
  # extend_params 定义扩展参数，不同的action使用的参数不一样，可配置key参考 当前所在目录/config/consts.go 文件
  #
  # 总qps = sum(actions数量*contracts数量*accounts数量*1000/间隔时间)
  # 每个qps = sum(actions数量*accounts数量*1000/间隔时间)
  multi_actions:
    ################################下面是demo worker
    - actions1: "demo"
      count: 1
      op_interval: 1000  #每个操作的间隔时间，单位：毫秒
      extend_params:
        percent: "21"

  # 全局可用参数配置
  global_params:
    mqtt_core: "192.168.149.128:57081"
    mqtt_driver: "16774105"

*/
type JobConfig struct {
	MultiFiles   []string          `yaml:"multi_files"`   //多压测动作配置文件数组
	MultiActions []MultiActionItem `yaml:"multi_actions"` //多压测动作配置数组
	GlobalParams map[string]string `yaml:"global_params"` //全局参数
}

// MultiActionItem 压测动作配置项
type MultiActionItem struct {
	Id           int
	Actions      string            `yaml:"actions"`       //动作，多个以逗号分割，每个单一动作名标识某种操作
	Count        int               `yaml:"count"`         //执行数量
	OpInterval   int64             `yaml:"op_interval"`   //执行间隔，为0则表示持续执行，>0为指定多少ms执行一次
	ExtendParams map[string]string `yaml:"extend_params"` //扩展参数，不同action支持不同参数
}
